package com.剑指offer.第三章;

/**
 * 给定一个字符串，请判读如果最多从字符串中删除一个字符能不能得到一个回文字符串。例如：如果输入字符串"abca"，由于删除字符'b'或'c'就能得到一个回文字符串，因此输出为true
 *
 * 比较是否是回文的逻辑一样
 */
public class 最多删除一个字符得到回文 {

    public static boolean resolve(String str) {

        int start = 0;
        int end = str.length() - 1;

        while (start < end) {
            if (str.charAt(start) != str.charAt(end)) {
                break;
            }
            start++;
            end--;
        }

        return start >= end || isPalindrome(str, start + 1, end) || isPalindrome(str, start, end - 1);
    }

    public static boolean isPalindrome(String str, int start, int end) {
        while (start < end) {
            if (str.charAt(start) != str.charAt(end)) {
                break;
            }
            start++;
            end--;
        }
        return start >= end;
    }

    public static void main(String[] args) {
        System.out.println(resolve("aca"));
    }

}
